package alocador.persistencia;

import java.util.HashSet;
import java.util.Set;

/**
 * Observer das acoes da Persistencia de Dados
 */
public class PersistenciaObserver {

	private static Set<Gravavel> listeners = new HashSet<Gravavel>();

	/**
	 * Registra um novo <code>Gravavel</code>como <i>listener</i> no monitor de
	 * persistencia. Nao eh permitido instancias iguais nos ouvintes
	 * 
	 * @param listener
	 *            Um novo <code>Gravavel</code> no observador
	 * 
	 * @return <code>true</code> se o objeto tiver sido cadastrado com sucesso
	 */
	public static boolean registrar(Gravavel listener) {
		return listeners.add(listener);

	}

	/**
	 * Grava os dados internos de cada listener
	 */
	public static void gravarDados() {
		for (Gravavel l : listeners) {
			PersistenciaFacade.gravarArquivo(l);
		}

	}

	/**
	 * Apaga os dados internos de cada listener e exclui seu arquivo de
	 * persistencia
	 */
	public static void zerarDados() {
		for (Gravavel listener : listeners) {
			listener.zerarDadosInternos();
			PersistenciaFacade.apagarArquivo(listener);
		}

	}

}
